﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QStandardItemModel>
#include <QMessageBox>
#include <QFileDialog>
#include <QFile>
#include <QTextStream>
#include "iostream"
#include <QDebug>
#include <QTextCodec>
#include <QRegularExpression>
#include <QRegularExpressionMatchIterator>
#include <QRegularExpressionMatch>
#include <QStandardItemModel>
#include <QStandardItem>
#include <QThread>
//#include <QXlsx>
#include <ActiveQt/QAxObject>

#include <QDesktopServices>
#include "xlsx/xlsxdocument.h"
#include "xlsx/xlsxformat.h"
#include "xlsx/xlsxcellrange.h"
#include "xlsx/xlsxchart.h"


#include "subject.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QList<Subject*> parseTextList(QList<QString>*);
    // 以中文数字开头
    bool startsWithChinesePrefix(QString&);
    // 数字开头的为题干
    bool startsWithDigit(QString&);
    // 是否是含有数字
    bool isNumeric(QString&);
    // 获取题目号
    QList<QString> getSubjectNum(QString&);
    // 是否是选项
    bool isSubOption(QString&);
    // 获取题目选项
    QList<QString> getSubjectOption(QString&);

    // 判断是否含有答案
    bool isAnswer(QString&, QString&);
    // 获取答案
    QList<QString> getAnswerContents(QString&, QString&);

    // 替换掉第一个.
    QString replaceFirstDot(const QString&, const QString&);

    // 根据题目类型处理题目答案
    QString getAnswerBySubType(QString&, QString&);

    // 多选答案中间添加逗号
    QString insertCommaBetweenChars(QString&);

    //添加题目到Table
    void addSubjectToTable(Subject*);



public slots:
    void clearSubject();
    void importText();
    void exportSubjectToExel();
    void exportTabelViewToExel();

private:
    Ui::MainWindow *ui;
    QStandardItemModel *model;
    // 解析转化试题对象
    QList<Subject*> subjectList;
    void initSlots();
};

#endif // MAINWINDOW_H
